import { Modal } from '@arco-design/web-vue';
import http from '../utils/request'
export default {
    data() {
        return {
            // 设置属性
            mixinViewModuleOptions: {
                createdIsNeed: true,       // 此页面是否在创建时，调用查询数据列表接口？
                activatedIsNeed: false,    // 此页面是否在激活（进入）时，调用查询数据列表接口？
                getDataListURL: '',       // 数据列表接口，API地址
                getDataListIsPage: false, // 数据列表接口，是否需要分页？
                deleteURL: '',            // 删除接口，API地址
                deleteIsBatch: false,     // 删除接口，是否需要批量？
                deleteIsBatchKey: 'id',   // 删除接口，批量状态下由那个key进行标记操作？比如：pid，uid...
                exportURL: ''             // 导出接口，API地址
            },
            // 默认属性
            dataForm: {},               // 查询条件
            dataList: [],               // 数据列表
            order: '',                  // 排序，asc／desc
            orderField: '',             // 排序，字段
            page: 1,                    // 当前页码
            limit: 10,                  // 每页数
            total: 0,                   // 总条数
            dataListLoading: false,     // 数据列表，loading状态
            dataListSelections: [],     // 数据列表，多选项
            addOrUpdateVisible: false,   // 新增／更新，弹窗visible状态
            pagination: { pageSize: 10, },
            rowSelection: {
                type: 'checkbox',
                showCheckedAll: true,
                onlyCurrent: false,
            },
        }
    },
    created() {
        if (this.mixinViewModuleOptions.createdIsNeed) {
            this.query()
        }
    },
    activated() {
        if (this.mixinViewModuleOptions.activatedIsNeed) {
            this.query()
        }
    },
    methods: {
        // 获取数据列表
        query() {
            this.dataList = [];
            this.dataListLoading = true
            http.get(
                this.mixinViewModuleOptions.getDataListURL,
                {
                    params: {
                        order: this.order,
                        orderField: this.orderField,
                        page: this.mixinViewModuleOptions.getDataListIsPage ? this.page : null,
                        limit: this.mixinViewModuleOptions.getDataListIsPage ? this.limit : null,
                        ...this.dataForm
                    }
                }
            ).then(({ data: res }) => {
                this.dataListLoading = false
                if (res.code !== 0) {
                    this.dataList = []
                    this.total = 0
                    return this.$message.error(res.msg)
                }
                this.dataList = this.mixinViewModuleOptions.getDataListIsPage ? res.data.list : res.data
                this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
            }).catch(() => {
                this.dataListLoading = false
            })
        },
        // 分页, 每页条数
        pageSizeChangeHandle(val) {
            this.page = 1
            this.limit = val
            this.query()
        },
        // 分页, 当前页
        pageCurrentChangeHandle(val) {
            this.page = val
            this.query()
        },
        getDataList: function () {
            this.page = 1
            this.query()
        },
        // 新增 / 修改
        addOrUpdateHandle(id) {
            this.addOrUpdateVisible = true
            this.$nextTick(() => {
                // this.$refs.addOrUpdate.dataForm.id = id
                this.$refs.addOrUpdate.init(id)
            })
        },
        deleteHandle(id) {
            Modal.open({
                title: '系统提示',
                content: '是否删除?',
                draggable: true,
                onOk: () => {
                    http.get(this.mixinViewModuleOptions.deleteURL, {
                        params: {
                            id: id
                        }
                    }).then(({
                        data: res
                    }) => {
                        if (res.code !== 0) {
                            this.$message.error(res.msg);
                            return
                        }
                        this.query();
                        this.$message.success("删除成功");
                    }).catch(() => { })
                },
                onCancel: () => {
                    console.log('Cancel');
                },
            });
        },
        batchDeleteHandle() {
            var selectList = this.dataListSelections;
            if (selectList.length == 0) {
                this.$message.error("请选择需要删除的行");
                return
            }
            this.deleteHandle(selectList.join(","))
        },
    }
}